/*
    贪心经典题目专题2
    
    前置知识: 
    讲解005、042 - 对数器
    讲解025、026、027 - 基础排序、有序表、比较器、堆结构

    狭义的贪心
    每一步都做出在当前状态下最好或最优的选择，从而希望最终的结果是最好或最优的算法

    广义的贪心
    通过分析题目自身的特点和性质，只要发现让求解答案的过程得到加速的结论，都算广义的贪心

    贪心是最符合自然智慧的思想，一般分析门槛不高
    理解基本的排序、有序结构，有基本的逻辑思维就能理解
    但是贪心的题目，千题千面，极难把握
    难度在于证明局部最优可以得到全局最优，好在！我们有对数器！贪心专题2、3，这两节大量使用对数器

    ================================================

    有关贪心的若干现实 & 提醒
    1，不要去纠结严格证明，每个题都去追求严格证明，浪费时间、收益很低，而且千题千面。玄学！
    2，一定要掌握用对数器验证的技巧，这是解决贪心问题的关键
    3，解法几乎只包含贪心思路的题目，代码量都不大
    4，大量累积贪心的经验，重点不是证明，而是题目的特征，以及贪心方式的特征，做好总结方便借鉴
    5，关注题目数据量，题目的解可能来自贪心，也很可能不是，如果数据量允许，能不用贪心就不用（稳）
    6，贪心在笔试中出现概率不低，但是面试中出现概率较低，原因是 淘汰率 vs 区分度
    7，广义的贪心无所不在，可能和别的思路结合，一般都可以通过自然智慧想明白，依然不纠结证明

    ================================================

    题目1
    砍竹子II
    现需要将一根长为正整数bamboo_len的竹子砍为若干段
    每段长度均为正整数
    请返回每段竹子长度的最大乘积是多少
    答案需要对1000000007取模
    测试链接 : https://leetcode.cn/problems/jian-sheng-zi-ii-lcof/

    需要掌握，讲解041，同余原理

    本题会讲解乘法快速幂，矩阵快速幂及其题目，会在后续课程讲述

    ================================================

    题目2
    分成k份的最大乘积
    一个数字n一定要分成k份，得到的乘积尽量大是多少
    数字n和k，可能非常大，到达10^12规模
    结果可能更大，所以返回结果对1000000007取模
    来自真实大厂笔试，没有在线测试，对数器验证

    ================================================

    题目3
    会议必须独占时间段的最大会议数量
    给定若干会议的开始、结束时间
    你参加某个会议的期间，不能参加其他会议
    返回你能参加的最大会议数量
    来自真实大厂笔试，没有在线测试，对数器验证

    ================================================

    题目4
    会议只占一天的最大会议数量
    给定若干会议的开始、结束时间
    任何会议的召开期间，你只需要抽出1天来参加
    但是你安排的那一天，只能参加这个会议，不能同时参加其他会议
    返回你能参加的最大会议数量
    测试链接 : 
    https://leetcode.cn/problems/maximum-number-of-events-that-can-be-attended/

    ================================================

    题目5
    IPO
    给你n个项目，对于每个项目i
    它都有一个纯利润profits[i]
    和启动该项目需要的最小资本capital[i]
    最初你的资本为w，当你完成一个项目时，你将获得纯利润，添加到你的总资本中
    总而言之，从给定项目中选择最多k个不同项目的列表
    以最大化最终资本，并输出最终可获得的最多资本
    测试链接 : https://leetcode.cn/problems/ipo/

    ================================================

    题目6
    加入差值绝对值直到长度固定
    给定一个非负数组arr，计算任何两个数差值的绝对值
    如果arr中没有，都要加入到arr里，但是只加一份
    然后新的arr，继续计算任何两个数差值的绝对值
    如果arr中没有，都要加入到arr里，但是只加一份
    一直到arr大小固定，返回arr最终的长度
    来自真实大厂笔试，没有在线测试，对数器验证

    需要掌握，讲解041，最大公约数

*/